package com.handsome.单例模式;

/**
 * 懒汉式（线程不安全）
 * 优点：起到了懒加载的效果
 * 缺点：只能在单线程环境下使用，因为在多线程环境下，当一个线程通过了if (instance == null)判断还未来得及向下执行时，其他的线程也通过了这个
 *      判断，这时便会产生多个实例。
 * 结论：在实际开发时不要使用这种方式
 * @author niechun
 * @date 2023/1/7 20:57
 */
public class SingletonLazy01 {
    public static void main(String[] args) {
        SingletonLazyTest01 instance1 = SingletonLazyTest01.getInstance();
        SingletonLazyTest01 instance2 = SingletonLazyTest01.getInstance();
        System.out.println(instance1==instance2);
        System.out.println("instance1的hashCode"+instance1.hashCode());
        System.out.println("instance2的hashCode"+instance2.hashCode());
    }
}

class SingletonLazyTest01 {
    //私有化构造方法
    private SingletonLazyTest01() {
    }

    //本类内部静态变量
    private static SingletonLazyTest01 instance;


    //提供一个共有的静态方法返回对象实例
    //使用到该方法的时候才回去创建实例
    public static SingletonLazyTest01 getInstance() {
        if (instance == null) {
            instance = new SingletonLazyTest01();
        }
        return instance;
    }

}
